﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using AcadPosApp.Utilidades;

namespace AcadPosApp.Administrativo.Cadastros
{
    public partial class CadastroRegras : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                TxtPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
        }

        private void CarregarRegras()
        {
            gvwRegras.DataSource = ControlClass.CNRegra.obterRegras(TxtPesquisa.Text);  //Roles.GetAllRoles();
            gvwRegras.DataBind();
            gvwRegras.Visible = true;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            CarregarRegras();
        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            pnlConsulta.Enabled = false;
            pnlEdicao.Visible = true;
            TrustX.Util.UtilForm.LimparCampos(pnlEdicao);
            btnConfirmar.CommandName = "Incluir";
        }

        protected void gvwRegras_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                int index = int.Parse((String)e.CommandArgument);
                if (e.CommandName == "Excluir")
                {
                        string msg = string.Empty;
                        if (Roles.DeleteRole(Server.HtmlDecode(gvwRegras.Rows[index].Cells[1].Text)))
                        {
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir,"")), true);
                            CarregarRegras();
                        }                        
                    }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Esta regra não pode ser excluída porque há usuários presentes nela."), true);                
            }        
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {

            try
            {
                if (btnConfirmar.CommandName == "Incluir")
                {
                    string msg = string.Empty;
                    if (!Roles.RoleExists(TxtRegra.Text))
                    {
                        Roles.CreateRole(TxtRegra.Text);
                        CarregarRegras();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Regra já existente!"), true);
                    }
                    
                    CarregarRegras();
                    pnlEdicao.Visible = false;
                    pnlConsulta.Enabled = true;
                }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "Falha inesperada! Tente novamente."), true);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlConsulta.Enabled = true;
        }

        protected void gvwRegras_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwRegras_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
        }

        protected void gvwRegras_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwRegras.PageIndex = e.NewPageIndex;
            CarregarRegras();
        }

    }
}